package com.ccn.kotlin_mvvm.app.event

import com.ccn.jetpack_mvvm.base.appContext
import com.ccn.jetpack_mvvm.base.viewmodel.BaseViewModel
import com.ccn.jetpack_mvvm.callback.livedata.event.EventLiveData
import com.ccn.kotlin_mvvm.app.util.CacheUtil
import com.ccn.kotlin_mvvm.data.model.bean.UserInfo
import com.kunminx.architecture.ui.callback.UnPeekLiveData
import me.hgj.jetpackmvvm.demo.app.util.SettingUtil

/**
 * APP全局的ViewModel，可以存放公共数据，
 * 当数据改变时，所有监听的地方都会收到回调，
 * 也可以做发送消息，
 * 比如：全局可使用的 地理位置信息，账户信息，APP的基本配置等
 */
class AppViewModel :BaseViewModel(){
    //APP的账户信息
    var userInfo = UnPeekLiveData.Builder<UserInfo>().setAllowNullValue(true).create()

    //App主题颜色 中大型项目不推荐以这种方式改变主题颜色，比较繁琐耦合，且容易有遗漏某些控件没有设置主题色
    var appColor = EventLiveData<Int>()

    //app 列表动画
    var appAnimation = EventLiveData<Int>()

    init {
        //默认值 保存的账户信息，没有登录则为null
        userInfo.value =CacheUtil.getUser()
        //默认值 颜色
        appColor.value = SettingUtil.getColor(appContext)
        //初始化列表动画
        appAnimation.value = SettingUtil.getListMode()
    }
}